package com.at.bigdata.spark.core.rdd.operator.action

import org.apache.spark.{SparkConf, SparkContext}

/**
 *
 * @author cdhuangchao3
 * @date 2023/3/19 9:52 PM
 */
object Spark03_RDD_aggregate {

  def main(args: Array[String]): Unit = {
    // 环境准备
    val sparkConf = new SparkConf().setMaster("local[*]").setAppName("RDD")
    val sc = new SparkContext(sparkConf)

    // TODO 算子 - 行动算子
    //    触发作业（Job）执行的方法
    //    底层调用 环境对象 的runJosb方法
    //    底层会创建 ActiveJon，并提交执行
    val rdd = sc.makeRDD(List(1, 2, 3, 4), 2)

    // aggregateByKey ： 初始值只参与分区内计算
    //  aggregate: 不仅参与分区内，还参与分区间计算
    val result = rdd.aggregate(10)(_ + _, _ + _)
    println(result)

    println(rdd.fold(0)(_+_))

    sc.stop()
  }

}
